package 牛客剑指专题二刷.链表;

/**
 * author:JiangSong
 * Date:2023/7/3
 **/

/**
 * 两个链表的第一个公共节点
 法1：双指针，若存在公共节点，都走两条路径，则会在公共点相遇；如果不存在公共点，那么也会走一样路程，并且是空
 */

public class JZ52 {
    class ListNode{
        int val;
        ListNode next = null;
        ListNode(int val){
            this.val = val;
        }
    }

    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if(pHead1 == null || pHead2 == null)return null;
        ListNode node1 = pHead1, node2 = pHead2;
        while(node1 != node2){
            node1 = node1 == null ? pHead2 : node1.next;
            node2 = node2 == null ? pHead1 : node2.next;
        }
        return node1;
    }
}
